c语言万历年系统设计报告,C语言编写单片机万历系统课程设计报告分.doc
多功能電腦時鐘設計報告
一、實訓目的意義及任務要求
1.1目的意義
單片機的使用領域已十分廣泛,如智能儀表、實時工控、通訊設備、導航系統、家用電器等。LED數字顯示的日歷鐘顯示清晰直觀、走時準確、可以進行夜視,并且還可以擴展出多種功能。 所以,電子萬年歷無論作為比賽題目還是練習題目都是很有價值。
圖3.1 單片機最小系統圖
3.2 數碼管、獨立按鍵及DS1302時鐘芯片電路的設計
系統仿真電路圖
DS1302與單片機連線圖
3.3 其他附屬電路設計
按鍵、電頻轉換芯片、RS232串口通信及電源電路等設計,如圖3.3所示
圖3.3 附屬電路設計圖
四、軟件設計
4.1主程序設計
主程序采用定時器0對程序進行掃描執行。分別執行DS1302芯片初始化子程序,寫數據子程序,將最初的值寫入芯片中,采用while循環循環執行鍵盤掃描子程序。
main()
{
TMOD=0x01; //使用模式1,16位定時器
TH0=(65536-10000)/256; //給定初值
TL0=(65536-10000)%256;
EA=1; //總中斷打開
ET0=1; //定時器中斷打開
TR0=1; //定時器開關打開
Ds1302_Init();
Ds1302_Write_Time();
while(1)
{
keyscan();
if(Btread==0)
{ Btread=1;
Ds1302_Read_Time();
}
display();
}
4.2 DS1302子程序設計
此子程序分為初始化程序,讀數據程序,寫數據程序,一些數據程序為例;
void Ds1302_Write_Byte(unsigned char addr, unsigned char d)
{
CE=0;_nop_();
SCLK=0; _nop_();
CE=1; _nop_();
Write1302(addr);
Write1302(d);
CE=0; _nop_();
IO=1;
SCLK=1;
}分別寫入地址,再寫入數據。
4.3時間調整子程序
時間調整子程序采用的是對key1按的次數不同來進行對年月日時分及星期的設置。
void zongshi(void)
{
if(!key)
{
if(btx==0)
{
if(!key)
{
btx=1;k++; } } }else{btx=0;}} k=1時,調整年份,key1為加,key2為減
void keyscan() k=2時,調整月份,key1為加,key2為減
{ k=3時,調整日份,key1為加,key2為減
display(); k=4時,調整星期,key1為加,key2為減
if(!key)
{
if(btx==0)
{
if(!key)
{
btx=1;
k++;
}
}
五、調試及性能分析
5.1軟件測試
電子成年歷是多功能的數字型,可以看當前日期(陰、陽歷),時間,還有溫度的儀器。電子成年歷功能很多,所以對于它的程序也較為復雜,所以在編寫程序和調試時出現了相對較多的問題。最后經過多次的模塊子程序的修改,一步一步的完成,最終解決了軟件。在軟件的調試過程中主要遇到的問題如下:
1.燒入程序后,LED數碼管顯示閃動,而且亮度不均勻。
解決:首先對調用的延時進行逐漸修改,可以解決顯示閃動問題。其次,由于本作品使作動態掃描方式顯示的數字,動態掃描很快,人的肉眼是無法看出,但是調用的顯示程序時,如果不在反回時屏蔽掉最后的附值,則會出現很亮的現象,所以在顯示的后面加了屏蔽子令,最后解決了此問題。
2.修改時間、日期時沒有農歷沒有自動對應上。
解決:把不相關的程序暫時屏蔽,地農歷的子程序獨立調試,發現在調用農歷自動更新時,對十進制和十六進制處理不好,所以會造成錯亂。最后把相應的十進制進行修改,使得可以與十六進制對應,最后解決了此問題.
5.2測試結果分析與結論
(1).在測試中遇到發光二極管、LED數碼管為不顯示時,首先使用試測儀對電路進行測試,觀察是否存在漏焊,虛焊,或者元件損壞.
(2).LED 數碼管顯示不正常,還有亮度不夠,首先使用試測儀對電路進行測試,觀察電路是否存在短路現象。查看燒寫的程
總結
以上是生活随笔為你收集整理的c语言万历年系统设计报告,C语言编写单片机万历系统课程设计报告分.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米kali linux蓝牙,小米筆記本
- 下一篇: c语言指针数组 难点总结,C语言之指针与