七段数字时钟演示程序

在这里插入图片描述
程序最终效果
在这里插入图片描述
源代码:

/*-------------------------------------------	
	WinMain.cpp --七段数字时钟演示程序
			GreenLeaf1976 791869691@qq.com
----------------------------------------------*/

#include <windows.h>

#define ID_TIMER	1

HINSTANCE g_hInstance = 0;

//主窗口回调函数
LRESULT CALLBACK AfxWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

//主函数WinMain
int WINAPI WinMain(_In_ HINSTANCE hInstance,
	_In_opt_ HINSTANCE hPrevInstance,
	_In_ LPSTR lpCmdLine, _In_ int nShowCmd)
{
	g_hInstance = hInstance;
	//定义窗口类名
	TCHAR szClassName[] = TEXT("AfxWndClassName");

	//设计窗口类
	WNDCLASSEX wcEx = { 0 };
	wcEx.cbSize = sizeof(WNDCLASSEX);				//窗口类结构大小
	wcEx.cbClsExtra = 0;							//窗口类额外数据
	wcEx.cbWndExtra = 0;							//窗口额外数据	
	wcEx.style = CS_VREDRAW | CS_HREDRAW;			//窗口类样式
	wcEx.lpfnWndProc = AfxWndProc;					//窗口类过程函数
	wcEx.lpszClassName = szClassName;				//窗口类名
	wcEx.lpszMenuName = nullptr;					//菜单句柄
	wcEx.hbrBackground = (HBRUSH)(COLOR_3DFACE + 1);//窗口类背景色
	wcEx.hInstance = hInstance;						//应用程序实例
	wcEx.hCursor = LoadCursor(NULL, IDC_ARROW);		//设置默认光标
	wcEx.hIconSm = LoadIcon(NULL, IDI_APPLICATION);	//窗口类小图标
	wcEx.hIcon = wcEx.hIconSm;						//窗口类大图标

	//注册窗口类
	if (!RegisterClassEx(&wcEx))
	{
		MessageBox(nullptr, TEXT("窗口类注册失败!"), TEXT("窗口类注册消息"), MB_ICONERROR);
		return -1;
	}

	//创建窗口
	HWND hWnd = CreateWindowEx(0,	//窗口扩展样式
		szClassName,				//窗口类名称
		TEXT("我的窗口"),			//窗口标题文本
		WS_OVERLAPPEDWINDOW,		//窗口样式
		100, 100, 800, 500,			//窗口显示的矩形位置(x,y,widht,height)
		nullptr,					//父窗口句柄
		nullptr,					//窗口菜单句柄(如果是子窗口就是窗口的ID号)
		hInstance,					//应用程序实例
		0);							//附加数据

	if (!hWnd)
	{
		MessageBox(hWnd, TEXT("窗口创建失败!"), TEXT("窗口创建消息"), MB_ICONERROR);
		return -2;
	}

	//显示与更新窗口
	ShowWindow(hWnd, nShowCmd);
	UpdateWindow(hWnd);
	SetForegroundWindow(hWnd); //设置为前台显示窗口

	//消息循环
	MSG msg;
	while (GetMessage(&msg, nullptr, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}


	return msg.wParam;
}

//绘制要显示的数字的形状
void DisplayDigit(HDC hdc, int iNumber)
{
	//数字的显示字段顺序为:
	//1,是上面一横,
	//2,第二排左面一竖
	//3,第二排右面一竖
	//4,中间一横
	//5,第四排左边一竖
	//6,第四排右边一竖
	//7,最后一排的一横
	static BOOL fSevenSegment[10][7] = {
		1,1,1,0,1,1,1,	//0
		0,0,1,0,0,1,0,	//1
		1,0,1,1,1,0,1,	//2
		1,0,1,1,0,1,1,	//3
		0,1,1,1,0,1,0,	//4
		1,1,0,1,0,1,1,	//5
		1,1,0,1,1,1,1,	//6
		1,0,1,0,0,1,0,	//7
		1,1,1,1,1,1,1,	//8
		1,1,1,1,0,1,1	//9
	};

	//七段数字的各个棱形的坐标
	//可在绘图上画好图形后,用工具测量实际坐标值
	static POINT ptSegment[7][6] = {
		7,6,11,2,31,2,35,6,31,10,11,10,		//最上面一横的坐标
		6,7,10,11,10,31,6,35,2,31,2,11,		//上面左边一竖的坐标
		36,7,40,11,40,31,36,35,32,31,32,11,	//上面右边一竖的坐标
		7,36,11,32,31,32,35,36,31,40,11,40,	//中间一横的坐标
		6,37,10,41,10,61,6,65,2,61,2,41,	//下面左边一竖的坐标
		36,37,40,41,40,61,36,65,32,61,32,41,//下面右边一竖的坐标
		7,66,11,62,31,62,35,66,31,70,11,70	//最下面一横的坐标
	};

	int iSeg;
	for (iSeg = 0; iSeg < 7; iSeg++)
	{
		if (fSevenSegment[iNumber][iSeg])
			Polygon(hdc, ptSegment[iSeg], 6);
	}
}

//绘制数字
void DisplayTwoDigits(HDC hdc, int iNumber, BOOL fSuppress)
{
	if (fSuppress || (iNumber / 10 != 0))
		DisplayDigit(hdc, iNumber / 10);

	OffsetWindowOrgEx(hdc, -42, 0, nullptr);
	DisplayDigit(hdc, iNumber % 10);
	OffsetWindowOrgEx(hdc, -42, 0, nullptr);
}

//绘制冒号
void DisplayColon(HDC hdc)
{
	POINT ptColon[2][4] = {
		2,21,6,17,10,21,6,25,
		2,51,6,47,10,51,6,55
	};

	Polygon(hdc, ptColon[0], 4);
	Polygon(hdc, ptColon[1], 4);

	OffsetWindowOrgEx(hdc, -12, 0, nullptr);
}

//绘制时间
void DisplayTime(HDC hdc, BOOL f24Hour, BOOL fSuppress)
{
	SYSTEMTIME st;
	GetLocalTime(&st);

	if (f24Hour)
		DisplayTwoDigits(hdc, st.wHour, fSuppress);
	else
		DisplayTwoDigits(hdc, (st.wHour %= 12) ? st.wHour : 12, fSuppress);

	DisplayColon(hdc);
	DisplayTwoDigits(hdc, st.wMinute, TRUE);
	DisplayColon(hdc);
	DisplayTwoDigits(hdc, st.wSecond, TRUE);

}

LRESULT CALLBACK AfxWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	static BOOL f24Hour, fSupperss;
	static HBRUSH hBrushRed;
	static int cxClient, cyClient;
	HDC hdc;
	PAINTSTRUCT ps;
	TCHAR szBuffer[2];

	switch (uMsg)
	{
		case WM_CREATE:
			SetWindowText(hWnd, TEXT("七段数字时钟演示程序"));
			hBrushRed = CreateSolidBrush(RGB(255, 0, 0));
			SetTimer(hWnd, ID_TIMER, 1000, nullptr);
			//break;

		case WM_SETTINGCHANGE:
			GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_ITIME, szBuffer, 2);
			f24Hour = (szBuffer[0] == '1');

			GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_ITLZERO, szBuffer, 2);
			fSupperss = (szBuffer[0] == '0');

			InvalidateRect(hWnd, nullptr, TRUE);
			break;

		case WM_SIZE:
			cxClient = LOWORD(lParam);
			cyClient = HIWORD(lParam);
			break;

		case WM_TIMER:
			InvalidateRect(hWnd, nullptr, TRUE);
			break;

		case WM_PAINT:
			hdc = BeginPaint(hWnd, &ps);

			SetMapMode(hdc, MM_ISOTROPIC);
			SetWindowExtEx(hdc, 276, 72, nullptr);
			SetViewportExtEx(hdc, cxClient, cyClient, nullptr);

			SetWindowOrgEx(hdc, 138, 36, nullptr);
			SetViewportOrgEx(hdc, cxClient / 2, cyClient / 2, nullptr);

			SelectObject(hdc, GetStockObject(NULL_PEN));
			SelectObject(hdc, hBrushRed);

			DisplayTime(hdc, f24Hour, fSupperss);
			EndPaint(hWnd, &ps);
			break;

		case WM_DESTROY:
			KillTimer(hWnd, ID_TIMER);
			DeleteObject(hBrushRed);
			PostQuitMessage(0);
			return 0;

		default:
			break;
	}


	return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1,initoolseup.EXE <br>读写 INI 文件的控件(258KB) <br>2,djchart.ZIP<br>djchart(57KB)<br>3,indicator.ZIP<br>数据棒图控件(200KB)<br>4,xjtpripr.ZIP <br>打印预览控件(257KB) <br>5,trend.ZIP<br>趋势控件可用于科学,工业监控,数据采集,股市分析等领域的数据显示、分析、打印(305KB) <br>6,dxcontrol.ZIP <br>API 函数控件,包含输入、声音、图形等(358KB)<br>7,gauge.ZIP <br>控件支持多数据处理和鼠标控制操作(232KB)<br>8,meter.ZIP <br>圆盘仪表控件(240KB) <br>9,percent.ZIP <br>百分比控件的应用范围非常广泛,既适用于通用的软件系统,也可用于科学、统计、工业监控等多种实时数据领域(192KB)<br>10,slider.ZIP <br>Slider 控件不但可生成通用的滑块控制,而且内置了大量的指针、刻度、数据棒风格用于组合生成各式各样的线形控制,支持鼠标的控制操作,应用领域非常广泛(246KB)<br>11,imgctls.ZIP <br>该控件包含两个控件,ImgListBox和ImgComboBox(56KB)<br>12,nslock15.ZIP<br>Sheridan Soft出品Outlook风格的工具栏控件,制作、使用都很方便,功能强大,是此类控件的佼佼者(97KB)<br>13,CDrom.ZIP <br>控制光驱的东东(5KB)<br>14,ActiveSkin.ZIP<br>界面美化(69KB)<br>15,FOXHWND.ZIP <br>一个比MCI32更出色的多媒体控件(14KB)<br>16,ACTIVEXSQL.ZIP <br>SQL接口控件(29KB)<br>17,Big2GB.ZIP <br>简繁体转换(41KB) <br>18,ACTIVEZIPPER.ZIP <br>高效率的压缩控件(11KB)<br>19,BOOKMARK.ZIP <br>BOOKMARK控件(20KB)<br>20,AresButtonPro.ZIP <br>任意形状立体动态按钮(306KB)<br>21,SysTray.ZIP <br>托盘控件(9KB) <br>22,Recorder.ZIP <br>录音控件(15KB)<br>23,CRESCENT2.ZIP <br>crescent公司的internet 编程套件2.0(2,642KB)<br>24,XCEEDZIP.ZIP <br>XCEEDZIP解压缩控件(987KB) <br>25,ZIP_ACTOCX.ZIP <br>ZIP_ACT解压缩控件(26KB)<br>26,Dssocket.ZIP <br>Dssocket是用来设计TCP/IP软件的VBX/OCX控件(781KB)<br>27,ZIPOCXCMP.ZIP <br>ZIPOCXCMP解压缩控件(83KB)<br>28,DYNACUBE.ZIP <br>DynamiCube 32-bit数据库控件(1,282KB)<br>29,DYNAZIP30.ZIP <br>DynaZIP解压缩控件(299KB)<br>30,f[1].ZIP <br>VB编程控件,使你的程序提供打印和打印预览功能(59KB)<br>31,b[1].ZIP <br>使你的应用程序能够通过internet连接在线检查更新版本(511KB)<br>32,c[1].ZIP <br>可以清晰朗读汉字,英文字母和数字的ActiveX控件(3,768KB) <br>33,cdnotiy.ZIP <br>当光盘被放进光驱或光驱里有光盘时便触发了这个控件(38KB)<br>34,Mp3play.ZIP <br>MP3PLAY 1.4 新版, 播放MP3的控件(181KB)<br>35,anigif.ZIP <br>使用动画鼠标的控件(49KB)<br>36,mp3dll.ZIP <br>又一个简单播放MP3的控件(82KB)<br>37,Zcg_3DLabel.ZIP <br>一个3D标签控件(15KB)<br>38,easyftp.ZIP <br>一个FTP客户端控件,可以用来编写自己的FTP下载软件(43KB)<br>39,mp3play.EXE <br>一个可以播放MP3编码文件的控件,DEMO版(264KB)<br>40,mp3enc.EXE <br>一个可以将WAV压缩为MP3编码文件的控件,DEMO版(269KB)<br>41,apipro.EXE <br>提供了35个与Windows API类似的功能,例如获得系统信息注册表操作等,对于VB新手是一个不错的工具,但对于熟悉API操作的老将没有多大实用价值,而且控件尺寸偏大(344KB)<br>42,sscrack.ZIP <br>一个功能十分强大数据库处理控件。可以取代VB/VC的Grid,并增强了许多数据库处理能力。可直接在pread的Grid加入Control(346KB)<br>43,zipocx.ZIP <br>一个功能十分强大的ZIP文件压缩、解压缩控件,可以制作自解压文件。压缩包包含一个类似WinZip的VB5演示程序(153KB)<br>44,actbar.ZIP <br>一个很Cool的菜单和工具栏增强控件,可以建立象Word97那样的工具栏和图象菜单,文件包含范例程序(353KB)<br>45,printdb.ZIP <br>一个国人自己编写的报表打印控件(158KB)<br>46,oglocx.ZIP <br>一个尺寸很小的支持OpenGL的控件,对于OpenGL的每一个函数,这个控件都提供了相应的方法。这是一个共享控件,如果要获得它的单用户协议的版本就要$199(51KB)<br>47,actskin.ZIP <br>利用这个控件可以建立超Cool的窗口,利用该控件可以为窗口添加不同的Skin,另外压缩包还附带了Skin编辑器(539KB)<br>48,activcap.ZIP <br>此控件是抓屏的强大工具。利用它,你可以抓下屏幕上的任何东西(293KB)<br>49,URSample.ZIP <br>一个系统权限控制控件UserRight(113KB)<br>50,coolbutton.ZIP <br>具有IE风格的按钮控件,可设置边框式样,背景 的透明特性,字体的大小颜色(34KB)<br>51,ezavimaker.ZIP <br>一个可以将BMP文件生成AVI文件的控件,包含范例(173KB)<br>52,s027_coolbutton1.ZIP <br>由4个Line控件和1个Label显示的类似命令按钮的(3KB)<br>53,CoolButton.ZIP<br>你可以把它作成一个控件(34KB)<br>54,s026_DisableX.ZIP <br>与系统有关的控件, 控制按钮,鼠标,任务条,重启计算机,程序的优先级等(17KB)<br>55,s025_capscreen.ZIP <br>这是一个屏幕拷贝的控件,可以实现全屏的拷贝并支持另存为位图类型的文件(28KB)<br>56,s017_subcls32.ZIP <br>一个子分类控件,对子分类技术头痛的朋友不用愁了。压缩包内附帮助文件及八个示例工程(46KB)<br>57,s016_trayform.ZIP <br>该控件让你轻松地将窗体发送到系统托盘。它会在窗体的标题栏上加一个小按钮(如图所示),按这个钮就可以让窗体驻留在系统托盘。或者改变最小化按钮的行为,当用户按最小化按钮时,窗口就不再缩小到状态栏,而出现在系统托盘(33KB)<br>58,s015imgctls.ZIP <br>该控件包含两个控件,ImgListBox和ImgComboBox。它扩展了ListBox和ComboBox的功能,允许你为这两个控件的项目添加图片。另外还有一些其它的功能等待你去发掘(57KB)<br>59,s014_vertmenu.ZIP <br>用来制作类似Outlook那样的垂直菜单,是代替ActiveBar的不错选择。整个压缩文件才277k,还包括一个示例程序和源代码(280KB)<br>60,s013_ariadtbar.ZIP <br>用这个控件做工具条不须象VB自带的要用到ImageList控件,同时还有许多很方便的功能,慢慢去发掘吧(154KB)<br>61,s012.ZIP <br>一个很好进度条控件,可以放置图片(142KB)<br>62,s011.ZIP <br>用它你可以做出与Windows一模一样的资源管理器,Cool!(40KB)<br>63,s010.ZIP <br>一个很好的子分类控件(含源码),可以简化不少子分类的操作,还包含8个示例程序(46KB)<br>64,s009.ZIP <br>可以使你的CommandButton控件象IE4的工具栏上的按钮。Cool!(29KB)<br>65,s008.ZIP <br>可以把任意形状的图片转换为窗体(包含帮助文件和示例)(36KB)<br>66,s007.ZIP <br>建立一个如同vb里属性栏一样的东东,不仅形似,神也似(137KB)<br>67,s006.ZIP <br>Check Box 和 List box的结合体(101KB)<br>68,s005.ZIP <br>一种可以弹出的按钮,具有多种形态和功能(31KB)<br>69,s004.ZIP <br>在 list 控件里进行增量查询(4KB)<br>70,s003.ZIP <br>一个进度条的控件,可以有多种形态供你选择(142KB)<br>71,s002.ZIP <br>TreeView 节点拖动、增加、删除等功能演示(8KB)<br>72,s001.ZIP <br>装入整个 C 盘目录到 TreeView(4KB)<br>73,j006_actresiz.ZIP <br>FORM的大小改变的时候,里面的对象也会跟着放大缩小(附示例原程序)(30KB)<br>74,j005_TriSpace.ZIP <br>此控件是一个软件3D引擎,内有示例源程序(73KB)<br>75,j004_lvicodra.ZIP <br>可拖拉图标的ListView控件演示(10KB)<br>76,j003_graphtreeocx.ZIP <br>图形树控件(129KB)<br>77,j002_coolbutton.ZIP <br>注释 (椭)圆、三角、星...形按钮控件,斑竹苦苦搜寻了n天n个网站,真是功夫不负有心人。 Vrey Very Cool(106KB)<br>78,j001_digital.ZIP <br>能够以液晶字体方式显示数字一个小控件(15KB)<br>79,g003_Weiqi101.ZIP <br>完全免费的ActiveX控件,此控件用于围棋对弈程序开发,可方便的开发出网络围棋对弈程序。(需文VB5.0 SP3支持)(18KB)<br>80,g002_tmrchess.ZIP <br>一个好用的象棋控件(30KB)<br>81,g001_tilepuz.ZIP <br>一个 Puzzle 游戏控件(57KB)<br>82,cracbar.EXE <br>Active Bar 2.0 的破解程序(48KB)<br>83,s018_msghook.exe<br>专门用来截取Windows消息的控件,非常好用(153KB)<br>84,o006_smile.zip<br>一个简单的小人头微笑(15KB)<br>85,o005_password.zip<br>用口令保护你的应用程序的控件。(88KB)<br>86,o004_jm.zip<br>用UUEncode及UUDecode编解码的OCX控件,可以用来加密。(12KB)<br>87,o003_lyftools.zip<br>这是一个封装了500多个Windows API的控件。(229KB)<br>88,o001_spltbars.zip<br>利用该控件可以轻松地在你的应用程序加入一个分割条(26KB)<br>89,dlinkacx.zip<br>在程序在两个程序进行数据的通信是一件很重要的事情,在本控件的范例,当你打开两个范例的时候,在一个里发生的事情也会在另一个发生,轻松帮助你完成“客户/服务器”设计(276KB)<br>90,fsanimicon.zip<br>在任务条上加入动画图标(77KB)<br>91,trispace.zip<br>自由软件, 此控件是一个软件 3d 引擎。通过此控件,您可以轻松地为您的应用程序加上 3d 特性。您可以使用三角形或多边形来构造 3d 物体或场景。你还可以自定义视觉方向等(73KB)<br>92,calendar_ocx.zip<br>进行农历转换的ocx构件.作者:尹强(14KB)<br>93,mcheck.zip<br>文件检测控件, 保护你所开发的应用程序(65KB)<br>94,ecltray.zip<br>简单的托盘(tray)控件(77KB)<br>95,fsi.zip<br>提供系统信息的控件(24KB)<br>96,keyboardcodekey.zip<br>得到键盘代码的控件, 用于检测键盘按键(13KB)<br>97,changeresolution.zip<br>改变计算机屏幕大小的控件(15KB)<br>98,ctimesynch.zip<br>与时间服务器同步的控件(16KB)<br>99,disablex.zip<br>与系统有关的控件, 控制按钮,鼠标,任务条,重启计算机,程序的优先级等(17KB)<br>100,listkill.zip<br>列表所有进程或清除某个进程的控件(18KB)<br>101,softlist.zip<br>列出计算机所有安装的软件(15KB)<br>102,trayicon.zip<br>一个托盘(tray)控件(27KB)<br>103,trayicon1.zip<br>另一个托盘(tray)控件(28KB)<br>104,arregistry.zip<br>访问系统注册表的控件(free), 主页地址http://sevillaonline.com/activex/arregistry.htm(25KB)<br>105,cobtext.zip <br>新概念VB之CobText Test控件(20KB)<br>106,dclock.zip <br>一个液晶显示数字时钟控件(26KB)<br>107,unlock.zip <br>得到加密的Access数据库密码(57KB)<br>108,threed32.zip <br>一个3D控件(73KB)<br>109,sblist20.zip <br>32-bit的列表框控件(有很多实用的功能) (157KB)<br>110,led.zip <br>LED液晶数字显示器控件(16KB)<br>111,lunar.zip <br>阳历/农历转换开发包 Ver1.0 (15KB)<br>112,rsgrid.exe <br>瑞软表格控件V5.0(图表)(8700KB)<br>113,swiftprint.exe <br>SwiftPrint V2.0(图表)(751KB)<br>114,vsreport.zip <br>VideoSoft VSREPORTS V1.1(图表)(3313KB)<br>115,ardemo.exe <br>ActiveReports V1.1(图表)(2750KB)<br>116,newyear.zip <br>一个制作贺卡的控件(是台湾的没有例子)(350KB)<br>117,swiftprint.zip<br>具有强大功能的打印控件,可以生成漂亮的打印文本(727KB) <br>118,print.zip<br>打印模拟控件(13KB) <br>119,hot.zip<br>系统热键控件(15KB) <br>120,hot1.zip<br>这是一个设置热键有控件,包括组合键(43KB) <br>121,list.zip<br>一个子分类控件(57KB) <br>122,Digital.zip<br>七段数码管控件及例程序(20KB) <br>123,clock.zip<br>数字时钟控件的源代码(34KB) <br>124,coollabel.zip<br>一个带源码和演示的增强Label控件,可以显示浮雕文字(66KB) <br>125,ocxdatecontrol.zip<br>从它获得当前日期再合适不过了(27KB) <br>126,tmrchess.zip<br>一个象棋控件(30KB) <br>127,mouseocx.zip<br>控制鼠标右键是否可用。(17KB)
智能风扇调速系统采用控制器采用单片机AT89S52,温度传感器采用DS18B20,用2位LED数码管以串口传送数据实现温度显示。 主控制器: 单片机AT89S52具有低电压供电和体积小等特点,四个端就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。 状态显示: 显示风扇调速系统处于的工作状态,状态有三种分别是 低速状态、速状态和高速状态,此系统以发光二极管指示作演示。 LED显示: 本系统共使用的三个共阳极七段数码管分别显示,当前的温度和设定定时的倒计时时间。温度以标准摄氏度为单位。时间以分钟为单位。数码管采用单片机P0口并行数据输出,P2口数据扫描控制显示,三极管8550做数码管的驱动。 键盘控制: 有一组键盘控制倒计时温度的设定加与减。另一组控制系统处于的三种状态,分别对应的是低速状态、速状态和高速状态,此系统以发光二极管指示作演示。还有一个开关按键是控制系统是处于自动状态和手动状态的开关。 温度传感器: DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。 系统复位: 系统单片机采用的是上电复位,当复位键按下时,系统会变为,开始的初始状态。 时钟振荡: 系统单片机使用的是外部时钟振荡,振荡频率为标准的11.0592MHZ。 风扇自动调速系统电路功能介绍: 1.接通交流220伏电源,电源指示灯亮。 2.按下启动电源开关,系统开始运行。 3.当手动/自动按键弹起时,为手动状态,温度显示为当前温度,时间显示为零,加,减键不起作用。 4.分别按下,低速至高速按键,相应的指示灯亮。 5.当手动/自动按键按下时,为自动状态,温度显示为当前温度,时间显示为零,加,减键起作用。每次加1或减1 。系统处于倒计时状态。 6.分别按下,低速至高速按键,相应的指示灯亮。当系统处于自动状态时,如果温度大于30度,低速灯自动点亮。如果温度大于32度,速灯自动点亮。如果温度大于34度,高速灯自动点亮。 风扇自动调速系统电路板实物展示: 风扇自动调速系统电路截图:
基于清华同方教学仪器设备公司和清华大学计算机系微机教研组联合研制的TPC-1A型16位微机实验培训系统,给出微机原理实践环节的相关资料:包括实验指南及参考程序、课程设计选题及参考程序。其所涉及的课程设计课题有: 一、通过小键盘的输入来控制输出的演示 1、按下‘R’键时,在七段数码管上循环显示‘8’; 2、按下‘P’键时,在发光二极管上依次循环定时点亮(用软件延迟); 3、按下‘G’键时,退出返回DOS; 4、按下‘E’键时,从各功能返回等待命令。 二、十字路口交通灯管制 设置十字路口南北、东西向的四组红、黄、灯,红、绿、黄灯亮灯的规律符合实际的十字路口交通灯亮灭的规律。但在红灯转换为绿灯时,其一路(南北向)可由计数另一路口(东西向)等待的车辆数,计满规定量转换;另一路(东西向)仍由定时器控制,时间到转换。 三、利用8259A的IRQ2显示断过程 1、主程序是在七段数码管上循环显示‘8’,从右到左循环显示; 2、断服务程序,在七段数码管上依次显示全1,2,3,......,9,要求显示2秒左右时间,可采用软件延迟(时间通过调试大致2秒左右),总计断9次,结束返回DOS; 3、每次由手动产生IRQ5断请求信号,引起断。 四、用8255和8253使发光二极管按一定规律轮流点亮 每隔1/2秒,1秒使发光二极管两个灯、四个灯循环依次点亮,共计四种点亮功能。可设置主机键盘命令键: ‘A’--‘D’:分别进入四种点亮功能; ‘Q’:从某个点亮功能退出; ‘W’:返回DOS 五、数字闹钟 1、通过8253定时器作产生秒脉冲定时断。在断服务程序实现秒,分,小时的进位(24小时制); 2、将当前时分秒在七段LED显示器上显示(如:091132); 3、可设置闹钟的时间当前值(对准时间); 4、具有闹铃功能。
第一节 “快速入门”实验例程 实验一 WAVE6000集成开发环境的使用练习…………………………………(4) 实验二 基于WAVE6000 集成开发环境的仿真与调试………………………(9) 实验三 Keil C51集成开发环境的使用练习…………………………………(12) 实验四 伟福®仿真器基于Keil C51 集成开发环境的仿真与调试…………(18) 实验五 KEIL®仿真器基于Keil C51集成开发环境的仿真与调试……………(20) 实验六 基于键盘显示的仿真、调试与实验方法……………………………(23) 第二节 “纯软件类” 实验例程(模拟调试) 实验七 拆字程序………………………………………………………………(29) 实验八 拼字程序………………………………………………………………(30) 实验九 数据区传递子程序……………………………………………………(31) 实验十 数据排序实验…………………………………………………………(32) 实验十一 清零程序………………………………………………………………(33) 第三节 “CPU资源” 实验例程(模拟调试/硬件实验) 实验十二 定时器实验…………………………………………………………(34) 实验十三 计数器实验…………………………………………………………(37) 实验十四 INT0 断实验………………………………………………………(40) 实验十五 INT1断实验………………………………………………………(42) 实验十六 串行口实验 …………………………………………………………(43) 实验十七 P1口输入、输出实验………………………………………………(44) 实验十八 P3.0口输入、P1口输出实验………………………………………(47) 第四节 “传统模块” 实验例程(硬件实验) 实验十九 八段码管显示实验…………………………………………………(50) 实验二十 键盘扫描显示实验…………………………………………………(53) 实验二十一 A/D0809转换实验…………………………………………………(55) 实验二十二 D/A0832转换实验…………………………………………………(57) 实验二十三 步进电机控制………………………………………………………(59) 实验二十四 8255控制交通灯实验………………………………………………(64) 实验二十五 双机通讯实验………………………………………………………(67) 实验二十六 电子音响驱动实验…………………………………………………(69) 实验二十七 定时器输出PWM实验………………………………………………(70) 实验二十八 555电路实验………………………………………………………(71) 实验二十九 运算放大器实验……………………………………………………(72) 第五节 “新型模块” 实验例程(硬件实验) 实验三十 点阵式LCD122X32液晶显示屏实验………………………………(75) 实验三十一 128X64点阵式液晶模块实验………………………………………(82) 实验三十二 16X2字符式液晶模块………………………………………………(86) 实验三十三 16X16点阵LED 广告屏实验………………………………………(87) 实验三十四 接触式 IC卡读写模块……………………………………………(89) 实验三十五 串行E2PROM24C02实验……………………………………………(92) 实验三十六 串行模数转换TLC549实验 ………………………………………(94) 实验三十七 串行数模转换TLC5615实验………………………………………(97) 实验三十八 串行时钟DS1302实验 ……………………………………………(99) 实验三十九 USB1.1接口模块演示实验………………………………………(103) 实验四十 RS485 通讯接口实验 ……………………………………………(105) 第六节 “传感器类” 实验例程(硬件实验) 实验四十一 电阻式温度测量实验……………………………………………(108) 实验四十二 DS18B20 一线式数字温度传感器 ………………………………(110) 实验四十三 验…………………………………………………(113) 实验四十四 ……………………………………………………(117) 实验四十五 霍尔传感器实验……………………………………………………(119) 第七节 “自由创新” 实验例程(需另配相应器件) (硬件实验) 实验四十七 8031最小系统组成实验(AT89C51)…………………………(122) 实验四十八 程序存储器扩展实验……………………………………………(125) 实验四十九 静态数据存储器扩展实验………………………………………(127) 实验五十 并行I/O口扩展实验 ……………………………………………(129) 实验五十一 串转并的IO口实验 ……………………………………………(132) 实验五十二 并转串的IO口实验 ……………………………………………(134) 实验五十三 多个外断源扩展实验…………………………………………(136) 实验五十四 8155接口芯片使用实验 …………………………………………(138) 实验五十五 并行键盘、显示接口芯片8279使用实验………………………(141) 实验五十六 可编程计数/定时器8253实验 …………………………………(145) 实验五十七 AT89C2051控制步进电机…………………………………………(147) 实验五十八 译码器实验………………………………………………………(149) 实验五十九 微型打印机打印字符………………………………………………(152) 第八节 “扩展模块” 实验例程(需选配相应模块) 实验六十 V/F电压频率转换实验………………………………………(153) 实验六十一 F/V 频率电压转换实验…………………………………………(155) 实验六十三 AD574 转换模块…………………………………………………(156) 实验六十六 非接触式IC 卡读写模块………………………………………(158) 实验六十七 ISD1420 语音录放模块实验……………………………………(161) 实验六十八 基于以太网接口TCP/IP模块实验………………………………(163) 实验七十一 CAN- bus 接口控制实验…………………………………………(166) 第九节 “综合设计” 实验例程 实验七十六 工业顺序控制(INT0 INT1)综合实验…………………………(167) 实验七十七 电子时钟(定时/计数器定时实验)……………………………(169) 实验七十八 万年历时钟实验 …………………………………………………(171) 实验七十九 电子琴演奏实验…………………………………………………(175) 实验八十 直流电机转速测量与控制实验…………………………………(176) 实验八十一 MCS51单片机与IBM微机通信……………………………………(180)
总体设计框图 系统电路设计总体设计方框图所示,控制器采用单片机AT89S52,温度传感器采用DS18B20,用2位LED数码管以串口传送数据实现温度显示。 总体设计方框图 主控制器 单片机AT89S52具有低电压供电和体积小等特点,四个端就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。 状态显示 显示风扇调速系统处于的工作状态,状态有三种分别是 低速状态、速状态和高速状态,此系统以发光二极管指示作演示。 LED显示 本系统共使用的三个共阳极七段数码管分别显示,当前的温度和设定定时的倒计时时间。温度以标准摄氏度为单位。时间以分钟为单位。数码管采用单片机P0口并行数据输出,P2口数据扫描控制显示,三极管8550做数码管的驱动。 键盘控制 有一组键盘控制倒计时温度的设定加与减。另一组控制系统处于的三种状态,分别对应的是低速状态、速状态和高速状态,此系统以发光二极管指示作演示。还有一个开关按键是控制系统是处于自动状态和手动状态的开关。 温度传感器 DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下: ●独特的单线接口仅需要一个端口引脚进行通信; ●多个DS18B20可以并联在惟一的三线上,实现多点组网功能; ●无须外部器件; ●可通过数据线供电,电压范围为3.0~5.5V; ●零待机功耗; ●温度以9或12位数字; ●用户可定义报警设置; ●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; ●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; 系统复位 系统单片机采用的是上电复位,当复位键按下时,系统会变为,开始的初始状态。 时钟振荡 系统单片机使用的是外部时钟振荡,振荡频率为标准的11.0592MHZ。
FPGA数字时钟电路程序是一种基于可编程逻辑的数字时钟设计方案。FPGA,即现场可编程门阵列(Field-Programmable Gate Array),是一种硬件可编程逻辑器件,通过在 FPGA 上编写电路程序,可以实现各种数字逻辑电路的设计。 在设计 FPGA数字时钟电路程序时,首先需要确定所需功能和性能。一个典型的数字时钟电路功能包括显示当前的小时、分钟和秒,并且具备时间的计时和调整功能。 在具体的实现,我们可以利用 FPGA 的可编程逻辑元件和时钟模块,来生成时钟信号和计时信号。以一个七段数码管为例,我们可以通过编写逻辑程序,将当前时钟信号进行分频,并通过驱动电路和数码管进行数码显示。 为了实现时间的计时和调整,我们可以利用 FPGA 的逻辑资源和片内存储器,设计计时和调整的逻辑电路。计时功能可以通过将时钟信号进行计数和更新,以实现秒、分、时的累加;而调整功能可以通过按键或其他输入设备,来改变时钟的运行状态和时间。 此外,在设计 FPGA数字时钟电路程序时,还需要考虑其他方面的功能和性能,如闹钟功能、温度显示、亮度调节、时区选择等。这些功能可以通过综合利用 FPGA 的逻辑资源和外设接口来实现。 总结来说,FPGA数字时钟电路程序是一种基于可编程逻辑的数字时钟设计方案,通过编写逻辑程序实现时钟信号的生成、计时和调整功能,并综合应用各种外设接口和逻辑资源实现更多的附加功能。这样的设计方案不仅能够满足数字时钟的基本功能,还具备较强的扩展性和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值